package com.ruoyi.fetv.mapper;

import com.ruoyi.fetv.controller.vo.Label;
import com.ruoyi.fetv.controller.vo.navigation.AddReq;
import com.ruoyi.fetv.controller.vo.navigation.EditReq;
import com.ruoyi.fetv.controller.vo.navigation.RespVO;
import com.ruoyi.fetv.domain.FetvNavigationContext;

import java.util.List;

/**
 * 栏目Mapper接口
 *
 * @author Jack
 * @date 2023-03-07
 */
public interface FetvNavigationContextMapper {
    /**
     * 查询栏目
     *
     * @param id 栏目主键
     * @return 栏目
     */
    public RespVO selectFetvNavigationContextById(Long id);

    /* 根据id获得栏目名字 */
    String getNavigationNameById(Long id);

    /**
     * 查询栏目列表
     *
     * @param fetvNavigationContext 栏目
     * @return 栏目集合
     */
    public List<RespVO> selectFetvNavigationContextList(FetvNavigationContext fetvNavigationContext);

    /**
     * 新增栏目
     *
     * @param fetvNavigationContext 栏目
     * @return 结果
     */
    public int insertFetvNavigationContext(AddReq fetvNavigationContext);

    /**
     * 修改栏目
     *
     * @param fetvNavigationContext 栏目
     * @return 结果
     */
    public int updateFetvNavigationContext(EditReq fetvNavigationContext);

    /**
     * 删除栏目
     *
     * @param id 栏目主键
     * @return 结果
     */
    public int deleteFetvNavigationContextById(Long id);

    /**
     * 批量删除栏目
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFetvNavigationContextByIds(Long[] ids);

    /**
     * 模糊查询获得标签
     *
     * @param name 名字
     * @return 结果
     */
    List<Label> getIdAndNameByName(String name);

    /**
     * 获得子节点数量
     *
     * @param id 父节点 0为顶级
     * @return 节点数量
     */
    int hasChildren(Long id);

}
